/**
 * @fileOverview 各种jQuery扩展
 * @author wujj
 */
(function($) {
	/**
	 * 切换显示隐藏状态
	 * 用法：$(selector).toggleDisplay()
	 * @returns $(this)
	 */
	$.fn.toggleDisplay = function() {
		if ($(this).css('display') !== 'none') {
			return $(this).hide();
		} else {
			return $(this).show();
		}
	};
	
	/**
	 * 根据设备绑定mousedown事件;
	 * @param {Function} fn
	 * @returns $(this)
	 */
	$.fn.exmousedown = function(fn) {
		var eventType = navigator.userAgent.match(/mobile/i) ? 'touchstart' : 'mousedown';
		if (fn) {
			return $(this).bind(eventType, fn);
		} else {			
			return $(this).trigger(eventType);
		}
	};
	
	/**
	 * 根据设备绑定mouseup事件;
	 * @param {Function} fn
	 * @returns $(this)
	 */
	$.fn.exmouseup = function(fn) {
		var eventType = navigator.userAgent.match(/mobile/i) ? 'touchend' : 'mouseup';
		if (fn) {
			return $(this).bind(eventType, fn);
		} else {			
			return $(this).trigger(eventType);
		}
	};
	
	$.getTmpl = function(url, callback) {
		$.post(url,{ "m": "templates"}, function(r) {
			var type = Qy.ua.mobile ? 'ontouchend' : 'onmouseup';
			callback && callback(r.replace(/onclick/g, type));
		});
	};
	
	/**
	 * 遮罩
	 */
	$.fn.mask = function() {
		var rect, width, height;
		
		width = window.innerWidth;
		height = window.innerHeight;
		
		$('.jq_mask').remove();
		rect = this[0].getBoundingClientRect();
		$('<div class="jq_mask"></div>').appendTo('body').css({
			'left': '0px',
			'top': '0px',
			'width': rect.left + rect.width + 'px',
			'height': rect.top + 'px'
		});
		$('<div class="jq_mask"></div>').appendTo('body').css({
			'left': rect.left + rect.width + 'px',
			'top': '0px',
			'width': width - (rect.left + rect.width),
			'height': rect.top + rect.height + 'px'
		});
		$('<div class="jq_mask"></div>').appendTo('body').css({
			'left': rect.left + 'px',
			'top': rect.top + rect.height + 'px',
			'width': width - rect.left + 'px',
			'height': height - (rect.top + rect.height) + 'px'
		});
		$('<div class="jq_mask"></div>').appendTo('body').css({
			'left': '0px',
			'top': rect.top + 'px',
			'width': rect.left + 'px',
			'height': height - rect.top + 'px'
		});
		return this;
	};
})(jQuery);